import { defineConfig, loadEnv } from 'vite'
import vue from '@vitejs/plugin-vue'
import path from 'path'

// https://vitejs.dev/config/
export default defineConfig(({ mode }) => {
  const env = loadEnv(mode, process.cwd(), '')
  const DEV_API_PREFIX = env.VITE_PROXY_DEV_API_PREFIX || '/dev-api'
  const DEV_API_TARGET = env.VITE_PROXY_DEV_API_TARGET || 'http://140.143.191.24:8188/'
  const ZT_PREFIX = env.VITE_PROXY_ZT_PREFIX || '/zt'
  const ZT_TARGET = env.VITE_PROXY_ZT_TARGET || 'http://10.134.232.46:8080/'
  const STATIC_PREFIX = env.VITE_PROXY_STATIC_PREFIX || '/static'
  const STATIC_TARGET = env.VITE_PROXY_STATIC_TARGET || 'http://10.134.232.15/static/images/zt/'

  return {
  plugins: [vue()],
  define: {
    __VUE_OPTIONS_API__: true,
    __VUE_PROD_DEVTOOLS__: false,
    __VUE_PROD_HYDRATION_MISMATCH_DETAILS__: false,
  },
  publicDir: "public",
  base: './',
  resolve: {
    alias: {
      '@': path.resolve(__dirname, './src'),
      'vue': 'vue/dist/vue.esm-bundler.js' // 定义vue的别名，如果使用其他的插件，可能会用到别名
    },
  },
  server: {
    host: '0.0.0.0',
    port: 13344,
    proxy: {
        [DEV_API_PREFIX]: {
          target: DEV_API_TARGET,
          changeOrigin: true,
          rewrite: (p) => p.replace(new RegExp(`^${DEV_API_PREFIX}`), ""),
        },
      [ZT_PREFIX]: {
        target: ZT_TARGET,//new address
        changeOrigin: true,
        rewrite: (path) => path.replace(new RegExp(`^${ZT_PREFIX}`), '')
      },
      [STATIC_PREFIX]: {
        target: STATIC_TARGET,
        changeOrigin: true,
        rewrite: (path) => path.replace(new RegExp(`^${STATIC_PREFIX}`), '')
      }
    }
  },
  //打包配置
  build: {
    //浏览器兼容性  "esnext"|"modules"
    target: "modules",
    //指定输出路径
    outDir: "dist",
    //生成静态资源的存放路径
    assetsDir: "assets",
    //小于此阈值的导入或引用资源将内联为 base64 编码，以避免额外的 http 请求。设置为 0 可以完全禁用此项
    assetsInlineLimit: 5120,
    //启用/禁用 CSS 代码拆分
    // cssCodeSplit: true,
    //构建后是否生成 source map 文件
    sourcemap: false,
    //自定义底层的 Rollup 打包配置
    rollupOptions: {
    },
    //@rollup/plugin-commonjs 插件的选项
    commonjsOptions: {
    },
    //构建的库
    // lib: {
    // },
    //当设置为 true，构建后将会生成 manifest.json 文件
    manifest: false,
    // 设置为 false 可以禁用最小化混淆，
    // 或是用来指定使用哪种混淆器
    // boolean | 'terser' | 'esbuild'
    minify: "terser", //terser 构建后文件体积更小
    //传递给 Terser 的更多 minify 选项。
    terserOptions: {
    },
    //设置为 false 来禁用将构建后的文件写入磁盘
    write: true,
    //默认情况下，若 outDir 在 root 目录下，则 Vite 会在构建时清空该目录。
    emptyOutDir: true,
    //启用/禁用 brotli 压缩大小报告
    brotliSize: true,
    //chunk 大小警告的限制
    chunkSizeWarningLimit: 3000
  }
}
})
